#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import json
import logging
import argparse
from pathlib import Path

from src.main import TwoFluidSolver
from src.utils.logger import setup_logger

def parse_args():
    """解析命令行参数"""
    parser = argparse.ArgumentParser(description='两流体子通道分析程序')
    parser.add_argument('config', type=str, help='配置文件路径')
    parser.add_argument('--output', '-o', type=str, default='results',
                       help='输出目录路径')
    parser.add_argument('--verbose', '-v', action='store_true',
                       help='显示详细输出')
    return parser.parse_args()

def main():
    """主程序入口"""
    # 解析命令行参数
    args = parse_args()
    
    # 设置日志
    log_level = logging.DEBUG if args.verbose else logging.INFO
    logger = setup_logger(log_level=log_level)
    
    try:
        # 检查配置文件
        if not os.path.exists(args.config):
            raise FileNotFoundError(f"配置文件不存在: {args.config}")
            
        # 创建输出目录
        output_dir = Path(args.output)
        output_dir.mkdir(parents=True, exist_ok=True)
        
        # 初始化求解器
        logger.info("初始化求解器...")
        solver = TwoFluidSolver(args.config)
        
        # 验证输入参数
        logger.info("验证输入参数...")
        solver.verify_channel_structure()
        
        # 运行计算
        logger.info("开始计算...")
        solver.run()
        
        # 后处理
        logger.info("生成结果可视化...")
        solver.visualizer.generate_report(output_dir)
        
        logger.info("计算完成!")
        return 0
        
    except Exception as e:
        logger.error(f"程序执行出错: {str(e)}")
        if args.verbose:
            logger.exception(e)
        return 1

if __name__ == '__main__':
    sys.exit(main()) 